package org.example.arithmatic;

/**
 * ‌冒泡排序 核心思想‌
 * 通过‌相邻元素的比较和交换‌，将最大元素逐步“冒泡”到数组末尾。
 * 每一轮遍历将未排序部分的最大值移动到正确位置。
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {5, 3, 8, 4, 2};
        bubbleSort(arr);
        System.out.println(java.util.Arrays.toString(arr)); // 输出: [2, 3, 4, 5, 8]
    }

    public static void bubbleSort(int[] arr) {
        int n = arr.length;

        // 外层循环控制遍历轮次（每轮确定一个最大值的位置）
        for (int i = 0; i < n - 1; i++) {

            // 内层循环比较相邻元素并交换
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 交换 arr[j] 和 arr[j+1]
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

